import pandas as pd
import numpy as np


def determine_column_type(column: pd.Series) -> str:
    """确定列的数据类型"""
    # 空列默认为VARCHAR
    if column.empty:
        return "VARCHAR(255)"
    
    # 尝试转换为数值类型
    try:
        numeric_col = pd.to_numeric(column, errors='coerce')
        
        # 检查是否所有非空值都能成功转换为数字（没有NaN）
        non_null_original = column.dropna()
        non_null_numeric = numeric_col.dropna()
        
        # 如果转换后的数量与原始数量不同，说明有值无法转换
        if len(non_null_original) != len(non_null_numeric):
            return "VARCHAR(255)"
        
        # 检查是否所有非空值都是整数
        if len(non_null_numeric) > 0:
            if all(x.is_integer() for x in non_null_numeric if not np.isnan(x)):
                return "INT"
            
            # 检查浮点数
            if pd.api.types.is_float_dtype(numeric_col):
                return "FLOAT"
    except:
        pass
    
    # 默认字符串类型
    return "VARCHAR(255)"